package cn.yemuysy.code.check.service;

import cn.yemuysy.code.check.model.InfringingWord;
import cn.yemuysy.code.check.model.InfringingWordMatch;

import java.util.List;

/**
 * 用于管理和检查侵权词的服务接口
 */
public interface InfringingWordService {

    /**
     * 初始化并加载全量侵权词
     * 
     * @param infringingWords 需要加载的侵权词列表
     */
    void initializeWithWords(List<InfringingWord> infringingWords);

    /**
     * 向服务中添加一个侵权词
     * 
     * @param infringingWord 要添加的侵权词
     */
    void addInfringingWord(InfringingWord infringingWord);

    /**
     * 向服务中批量添加多个侵权词
     * 
     * @param infringingWords 要添加的侵权词列表
     */
    void addInfringingWords(List<InfringingWord> infringingWords);

    /**
     * 检查文本中是否包含任何侵权词
     * 
     * @param text 要检查的文本
     * @param site 检查的站点上下文（可以为null表示所有站点）
     * @return 在文本中找到的匹配列表
     */
    List<InfringingWordMatch> checkText(String text, String site);

    /**
     * 从文本中删除所有侵权词，使用指定的替换字符串
     * 
     * @param text 要清理的文本
     * @param site 检查的站点上下文（可以为null表示所有站点）
     * @param replacement 用于替换侵权词的字符串（如果为null，实现使用默认值）
     * @return 已替换侵权词的清理后文本
     */
    String removeInfringingWords(String text, String site, String replacement);

    /**
     * 使用默认替换（***）从文本中删除所有侵权词
     * 
     * @param text 要清理的文本
     * @param site 检查的站点上下文（可以为null表示所有站点）
     * @return 已将侵权词替换为***的清理后文本
     */
    String removeInfringingWords(String text, String site);
}
